/*
 * CObjeto.cpp
 *
 *  Created on: 03/09/2008
 *      Author: samuel.grigolato
 */

#include "CObjeto.h"

CObjeto::CObjeto() {
	Solido = true;
	Destruido = false;
	TempoInicioContagem = 0;
	Item = NULL;
}

CObjeto::~CObjeto() {
	//
}


bool CObjeto::Init(int PosicaoX, int PosicaoY, char* Imagem, int MaxFrames){
	CEntity::Init(PosicaoX, PosicaoY);

	int LarguraTela = CParametros::GetLarguraJanela();
	int AlturaTela = CParametros::GetAlturaJanela();
	int LarguraTile = CParametros::GetLarguraTile();
	int AlturaTile = CParametros::GetAlturaTile();

	X = ((LarguraTela - (LarguraTile * CParametros::GetLarguraMapa())) / 2)
			+ (LarguraTile * PosicaoX);
	Y = ((AlturaTela - (AlturaTile * CParametros::GetAlturaMapa())) / 2)
			+ (AlturaTile * PosicaoY);
	ControleAnimacao.SetFrameRate(150);

	if (OnLoad(Imagem, LarguraTile, AlturaTile, MaxFrames) == false) {
		return false;
	}

	return true;
}

void CObjeto::ProcessaColisao(CEntity* Entidade, TipoColisao TpColisao) {
	if (TpColisao == FOGO) {
		Destruido = true;
		AnimState = 1;
		ControleAnimacao.SetCurrentFrame(0);
		TempoInicioContagem = SDL_GetTicks();
	}
}

void CObjeto::OnLoop() {
	CEntity::OnLoop();
	if (Destruido) {
		long tempoAtual = SDL_GetTicks();
		if ((tempoAtual - TempoInicioContagem) > 300) {
			Trash = true;
			if (Item != NULL) {
				Item->X = X;
				Item->Y = Y;
				Item->Init(TileX, TileY);
				CEntity::EntityList->insert(CEntity::EntityList->end() - 1, Item);
			}
		}
	}


}
